<table border="0" cellpadding="2" cellspacing="0" width="100%">
<tr>
<td><H2><font color="#336699" class="PageHeader">Relocating Jobs From a User's Workstation</font></H2></td>
</tr>
</table>
<table border="0" cellpadding="2" cellspacing="0" width="100%">
<tr>
<td>
<br><br>
<P STYLE="margin-bottom: 0in">Grid Engine may be configured to
relocate a job, useful in the case where the host being used is a
desktop system and is only to be used when the owner is not actively
working with it. This uses the checkpointing facility of Grid Engine
to kill and restart the job elsewhere when the user returns and moves
the mouse or presses a key.</P>
<P STYLE="margin-bottom: 0in">To set up this configuration, the
following steps are needed:</P>

<P STYLE="margin-bottom: 0in">1) Configure Grid Engine to track
interactive idle time<BR>2) Configure the checkpointing interface<BR>3)
Add the checkpoint ability to the appropriate queues<BR>4) Set the
load threshold in the queues to trigger the relocation</P>
<P STYLE="margin-bottom: 0in"><B>1) Configure Grid Engine to track
interactive idle time</B></P>

<P STYLE="margin-bottom: 0in">Please see the following application
note: <A HREF="idle.html">Tracking Interactive Idle Time</A></P>
<P STYLE="margin-bottom: 0in">
</P>
<P STYLE="margin-bottom: 0in"><B>2) Configure the checkpointing
interface</B></P>
<P STYLE="margin-bottom: 0in">The checkpointing interface needs to be
created. This can be done in qmon:</P>
<P STYLE="margin-bottom: 0in">
</P>
<UL>
	<LI><P STYLE="margin-bottom: 0in">Click on the &quot;Checkpoint
	Configuration&quot; icon 
	</P>
	<LI><P STYLE="margin-bottom: 0in">Click &quot;Add&quot;</P>
	<LI><P STYLE="margin-bottom: 0in">Name the checkpointing interface
	(you will be using this name when submitting the job) 
	</P>
	<LI><P STYLE="margin-bottom: 0in">Select the interface, USERDEFINED</P>
	<LI><P STYLE="margin-bottom: 0in">Select the appropriate queues to
	attach the checkpointing interface</P>
	<LI><P STYLE="margin-bottom: 0in">Leave all other fields blank (if
	you had an actual checkpointable job, you would have actual entries
	here) 
	</P>
	<LI><P STYLE="margin-bottom: 0in">Select &quot;On Job Suspend&quot;
	to relocate the job after it is suspended 
	</P>
	<LI><P STYLE="margin-bottom: 0in">Click &quot;Ok&quot; 
	</P>
	<LI><P STYLE="margin-bottom: 0in">Click &quot;Done&quot; to close
	this dialog box</P>
</UL>
<P STYLE="margin-bottom: 0in"><B>3) Add the checkpoint ability to the
appropriate queues</B></P>
<P STYLE="margin-bottom: 0in">In qmon, modify the appropriate queues
to give them the checkpointing ability:</P>
<P STYLE="margin-bottom: 0in">
</P>
<UL>
	<LI><P STYLE="margin-bottom: 0in">Click &quot;Queue Control&quot; 
	</P>
	<LI><P STYLE="margin-bottom: 0in">Select a queue and click &quot;Modify&quot;
		</P>
	<LI><P STYLE="margin-bottom: 0in">Under &quot;Type&quot; on the
	&quot;General Configuration&quot; tab, check &quot;Checkpointing&quot;
		</P>
	<LI><P STYLE="margin-bottom: 0in">Click &quot;Ok&quot;</P>
</UL>
<P STYLE="margin-bottom: 0in"><B>4) Set the load threshold in the
queues to trigger the relocation</B></P>
<P STYLE="margin-bottom: 0in">
</P>
<P STYLE="margin-bottom: 0in">In qmon &quot;Queue Control&quot;,
select and modify an appropriate queue. On the &quot;Load/Suspend
Thresholds&quot; tab, add to the currently set load threshold by
clicking on the heading labelled &quot;Load&quot; and selecting the
idle time resource. Enter the desired value under the value column.</P>
<P STYLE="margin-bottom: 0in">
</P>
<P STYLE="margin-bottom: 0in">When submitting a job that is eligible
to be moved, the checkpointing interface needs to be specified. For
example, if the interface created above was named &quot;reloc&quot;,
I would submit the job as such:</P>
<P STYLE="margin-bottom: 0in">
</P>
<PRE STYLE="margin-left: 0.79in">qsub -ckpt reloc myjob.sh</PRE><P STYLE="margin-bottom: 0in">
<BR>
</P>
<P STYLE="margin-bottom: 0in">The job will be eligible to run in any
queue which has the checkpointing ability. Then, if the job is
subsequently suspended (as when the queue it is running in is
suspended when the user clears the interactive idle time), it will be
killed, then requeued. 
</P>
<p></p>
</table>